﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

namespace WeChatBotSDK.Enums
{
    /// <summary>
    /// 消息来源类型
    /// </summary>
    public enum FromType
    {
        /// <summary>
        /// 私聊
        /// </summary>
        Private = 1,

        /// <summary>
        /// 群聊
        /// </summary>
        Group = 2,

        /// <summary>
        /// 公众号
        /// </summary>
        PublicAccount = 3
    }
    /// <summary>
    /// 消息类型
    /// </summary>
    public enum MsgType
    {
        /// <summary>
        /// 文本消息
        /// </summary>
        Text = 1,

        /// <summary>
        /// 图片
        /// </summary>
        Image = 3,

        /// <summary>
        /// 语音
        /// </summary>
        Voice = 34,

        /// <summary>
        /// 名片
        /// </summary>
        ContactCard = 42,

        /// <summary>
        /// 视频
        /// </summary>
        Video = 43,

        /// <summary>
        /// 动态表情
        /// </summary>
        AnimatedEmoji = 47,

        /// <summary>
        /// 地理位置
        /// </summary>
        Location = 48,

        /// <summary>
        /// 分享链接或附件
        /// </summary>
        LinkOrFile = 49,

        /// <summary>
        /// 红包
        /// </summary>
        RedPacket = 2001,

        /// <summary>
        /// 小程序
        /// </summary>
        MiniProgram = 2002,

        /// <summary>
        /// 群邀请
        /// </summary>
        GroupInvite = 2003,

        /// <summary>
        /// 系统消息
        /// </summary>
        SystemMessage = 10000
    }
    /// <summary>
    /// 消息来源
    /// </summary>
    public enum MsgSource
    {
        /// <summary>
        /// 别人发送
        /// </summary>
        FromOthers = 0,

        /// <summary>
        /// 自己发送
        /// </summary>
        FromSelf = 1
    }
    /// <summary>
    /// 用户在线状态
    /// </summary>
    public enum OnlineStatus
    {
        /// <summary>
        /// 下线
        /// </summary>
        Offline = 0,

        /// <summary>
        /// 上线
        /// </summary>
        Online = 1
    }

    /// <summary>
    /// 性别枚举
    /// </summary>
    public enum SexEnum
    {
        /// <summary>
        /// 未知性别
        /// </summary>
        Unknown = 0,

        /// <summary>
        /// 男性
        /// </summary>
        Male = 1,

        /// <summary>
        /// 女性
        /// </summary>
        Female = 2
    }
    /// <summary>
    /// 好友请求来源类型
    /// </summary>
    public enum SceneEnum
    {
        /// <summary>
        /// 未知来源
        /// </summary>
        Unknown = 0,

        /// <summary>
        /// QQ
        /// </summary>
        QQ = 1,

        /// <summary>
        /// 微信号
        /// </summary>
        WeChatID = 3,

        /// <summary>
        /// 单向添加
        /// </summary>
        OneWay = 6,

        /// <summary>
        /// 通讯录
        /// </summary>
        AddressBook = 10,

        /// <summary>
        /// 通讯录（备用）
        /// </summary>
        AddressBookAlt = 13,

        /// <summary>
        /// 群聊
        /// </summary>
        GroupChat = 14,

        /// <summary>
        /// 手机号
        /// </summary>
        PhoneNumber = 15,

        /// <summary>
        /// 名片
        /// </summary>
        BusinessCard = 17,

        /// <summary>
        /// 扫一扫
        /// </summary>
        ScanQRCode = 30
    }
    /// <summary>
    /// 转账事件的来源类型
    /// </summary>
    public enum MsgSourceEnum
    {
        /// <summary>
        /// 收到转账
        /// </summary>
        ReceivedTransfer = 1,

        /// <summary>
        /// 对方接收转账
        /// </summary>
        OpponentAcceptedTransfer = 2,

        /// <summary>
        /// 发出转账
        /// </summary>
        SentTransfer = 3,

        /// <summary>
        /// 自己接收转账
        /// </summary>
        SelfAcceptedTransfer = 4,

        /// <summary>
        /// 对方退还
        /// </summary>
        OpponentReturnedTransfer = 5,

        /// <summary>
        /// 自己退还
        /// </summary>
        SelfReturnedTransfer = 6
    }
    /// <summary>
    /// 转账到账类型
    /// </summary>
    public enum TransTypeEnum
    {
        /// <summary>
        /// 即时到账
        /// </summary>
        Instant = 1,

        /// <summary>
        /// 延时到账
        /// </summary>
        Delayed = 2
    }

    /// <summary>
    /// 微信回调事件类型枚举
    /// </summary>
    public enum WechatEventType
    {
        /// <summary>
        /// 未知事件
        /// </summary>
        Unknown = 0,

        /// <summary>
        /// 注入成功
        /// </summary>
        InjectionSuccess = 10000,

        /// <summary>
        /// 转账事件
        /// </summary>
        TransferEvent = 10006,

        /// <summary>
        /// 支付事件
        /// </summary>
        PaymentEvent = 10007,

        /// <summary>
        /// 收到群聊消息
        /// </summary>
        GroupMessageReceived = 10008,

        /// <summary>
        /// 收到私聊消息
        /// </summary>
        PrivateMessageReceived = 10009,

        /// <summary>
        /// 自己发出消息
        /// </summary>
        SelfMessageSent = 10010,

        /// <summary>
        /// 好友请求
        /// </summary>
        FriendRequest = 10011,

        /// <summary>
        /// 账号变动事件
        /// </summary>
        AccountChangeEvent = 10014
    }

    /// <summary>
    /// 登录状态枚举
    /// </summary>
    public enum LoginStatus
    {
        /// <summary>
        /// 尚未登录微信
        /// </summary>
        NotLoggedIn = 0,

        /// <summary>
        /// 请在手机上点击登录
        /// </summary>
        ClickLoginOnPhone = 1,

        /// <summary>
        /// 正在登录微信中
        /// </summary>
        LoggingIn = 2,

        /// <summary>
        /// 微信登录完成
        /// </summary>
        LoginCompleted = 3,

        /// <summary>
        /// 点击登录界面
        /// </summary>
        ClickLoginUI = 4,

        /// <summary>
        /// 未知状态
        /// </summary>
        Unknown = 5
    }

    /// <summary>
    /// 下载类型枚举
    /// </summary>
    public enum DownloadType
    {
        /// <summary>
        /// 全天下载
        /// </summary>
        AllDayDownload = 1,

        /// <summary>
        /// 全天不下载
        /// </summary>
        NoDownloadAllDay = 2
    }

}
